﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Web.Security;

public partial class Register : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            _datBirthday.Value = DateTime.Now;
            SetFocus(_txtUsername);
        }
    }
    protected void _txtUsername_ValueChanged(object sender, EventArgs e)
    {
        if (!RequiredFieldValidator1.IsValid)
            return;
        if(_txtUsername.Text == null)
        {
            _lblUsername.BackColor = System.Drawing.Color.Yellow;
            _lblUsername.Text = "Chưa nhận tên đăng nhập";
            SetFocus(_txtUsername);
        }
        else
        {
            string username = _txtUsername.Text;
            DataTable dt = DBClass.SelectData("SELECT * FROM USERS WHERE USERNAME='" + username + "'");
            if (dt.Rows.Count > 0)
            {
                _lblUsername.Text = "Tên đăng nhập đã tồn tại";
                _lblUsername.BackColor = System.Drawing.Color.Red;
                SetFocus(_txtUsername);
            }                
            else
            {
                _lblUsername.Text = "Bạn có thể dùng tên đăng nhập này";
                _lblUsername.BackColor = System.Drawing.Color.LightGreen;
                SetFocus(_txtPassword1);
            }
        }
    }
    protected void _txtEmail_TextChanged(object sender, EventArgs e)
    {
        if(!RegularExpressionValidator1.IsValid)
            return;
        string email = _txtEmail.Text;
        DataTable dt = DBClass.SelectData("SELECT * FROM USERS WHERE EMAIL = '" + email + "'");
        if (dt.Rows.Count > 0)
        {
            _lblEmail.Text = "Email này đã được sử dụng";
            _lblEmail.BackColor = System.Drawing.Color.Red;
            SetFocus(_txtEmail);
        }
        else
        {
            _lblEmail.Text = "Bạn có thể dùng email này";
            _lblEmail.BackColor = System.Drawing.Color.LightGreen;
            SetFocus(_txtPhoneNo);
        }
    }

    protected void _btnCancel_Click(object sender, EventArgs e)
    {
        Response.Redirect("Homepage.aspx");
    }
    protected void _btnOk_Click(object sender, EventArgs e)
    {
        if(!Page.IsValid)
            return;
        try
        {
            string username = _txtUsername.Text;
            string password = FormsAuthentication.HashPasswordForStoringInConfigFile(_txtPassword1.Text, "MD5");
                
            string fullname = _txtFullName.Text;
            string sex = _radMale.Checked ? "male" : "female";
            string birthday = _datBirthday.Date.ToShortDateString();
            string address = _txtAddress.Text;
            string idno = _txtIDNo.Text;
            string email = _txtEmail.Text;
            string phone = _txtPhoneNo.Text;
            string role = "0";
            string active = "0";
            string randomkey = DBClass.CreateRandomString(10);

            DataTable dtUsername = DBClass.SelectData("SELECT * FROM users WHERE username = '" + username + "'");
            DataTable dtEmail = DBClass.SelectData("SELECT * FROM users WHERE email = '" + email + "'");
            if (dtUsername.Rows.Count > 0)
            {
                _lblMessage.Text = "Tên đăng nhập đã tồn tại";
            }
            else if (dtEmail.Rows.Count > 0)
            {
                _lblMessage.Text = "Email này đã được sử dụng";
            }
            else if (_txtIDNo.Text.Length != 9)
            {
                _lblMessage.Text = "CMND gồm 9 chữ số";
            }
            else if (_captcha.IsValid)
            {
                string strSQL =
                    @"INSERT INTO users (UserName, Password, FullName, Sex, BirthDay, ID_Num, Address, Email, Phone, Role, Active, RandomKey)
                                values(@UserName, @Password, @FullName, @Sex, @BirthDay, @ID_Num, @Address, @Email, @Phone, @Role, @Active, @RandomKey)";
                SqlParameter[] parameters = {
                                                new SqlParameter("@UserName", username),
                                                new SqlParameter("@Password", password),
                                                new SqlParameter("@FullName", fullname),
                                                new SqlParameter("@Sex", sex),
                                                new SqlParameter("@BirthDay", birthday),
                                                new SqlParameter("@ID_Num", idno),
                                                new SqlParameter("@Address", address),
                                                new SqlParameter("@Email", email),
                                                new SqlParameter("@Phone", phone),
                                                new SqlParameter("@Role", role),
                                                new SqlParameter("@Active", active),
                                                new SqlParameter("@RandomKey", randomkey)
                                            };
                int nor = DBClass.Execute(strSQL, parameters);
                if(nor > 0)
                {
                    _lblMessage.Text = "Đăng ký thành công";
                    string emailAddress = email;
                    string emailTitle = "PSD Book Store(Xác nhận đăng ký thành viên)";
                    string emailContent = "Cảm ơn bạn đã đăng kí làm thành viên của chúng tôi<br>Từ bây giờ bạn đã có thể tham gia mua hàng ở cửa hàng.<br>";
                    emailContent += "Xin vui lòng nhấp vào link liên kết bên dưới hoặc copy dán vào trình duyệt để kích hoạt tài khoản <br>";
                    emailContent += "<a href='" + Request.Url.Authority + "ActiveUser.aspx?username=" + username + "&randomkey=" + randomkey + "'>Nhấn vào đây</a><br>";
                
                    bool res = DBClass.SendMailByGmail(emailAddress, emailTitle, emailContent);

                    if(!res)
                        Response.Write("<script> alert ('Không có mạng sao gởi mail') </script>");

                    Response.Redirect("Message.aspx?action=" + EClass.EAction.Register.ToString());
                }
                else
                {
                    _lblMessage.Text = "Lỗi: Không thêm vào cơ sở dữ liệu được";
                }
            }
            else
            {
                _lblMessage.Text = "Mã xác nhận chưa đúng";
            }
        }
        catch (Exception ex)
        {
            _lblMessage.Text = ex.ToString();
//            _lblMessage.Text = "Dữ liệu không hợp lệ, vui lòng kiểm tra lại. " + error;
        }
    }

   
}
